JDK, JRE, JVM Nedir? Java’da Farkları ve Kullanım Senaryoları (2026)
JDK, JRE ve JVM nedir?
JDK, Java geliştirmek için kullanılan araç setidir. JRE, Java uygulamalarını çalıştırmak için gereken ortamdır. JVM ise Java bytecode’unu çalıştıran sanal makinedir. Kısaca: JDK geliştirir, JRE çalıştırır, JVM yürütür.
JDK, JRE ve JVM, Java ekosisteminin en temel üç kavramıdır. Java öğrenmeye başlayanların en çok karıştırdığı konulardan biri bu yapılar arasındaki farktır. Bu rehberde JDK JRE JVM farklarını, nasıl çalıştıklarını ve hangi senaryoda hangisine ihtiyaç duyulduğunu sade ve net şekilde öğreneceksiniz.
JDK, JRE ve JVM Nedir?
Java ekosisteminde bir program yazmak, derlemek ve çalıştırmak için farklı katmanlar birlikte çalışır. Bu katmanların merkezinde JDK, JRE ve JVM bulunur.
JDK (Java Development Kit), Java geliştirmek için gereken araçları içerir. Derleyici, debug araçları ve geliştirme için gerekli bileşenler burada yer alır.
JRE (Java Runtime Environment), Java uygulamalarını çalıştırmak için gereken ortamdır. Bir kullanıcı sadece Java ile yazılmış uygulamayı çalıştıracaksa çalışma tarafı önemlidir.
JVM (Java Virtual Machine) ise Java bytecode’unu çalıştıran sanal makinedir. Java’nın farklı işletim sistemlerinde çalışabilmesini sağlayan temel mantık burada yer alır.
JVM Nasıl Çalışır?
Java kodu önce insanın okuyabileceği kaynak kod olarak yazılır. Daha sonra bu kod derlenir ve bytecode denilen ara formata çevrilir. İşte bu bytecode’u çalıştıran bileşen JVM’dir.
Java Source Code (.java)
↓
javac (Compiler)
↓
Bytecode (.class)
↓
JVM
↓
Machine Code
↓
Running Program
Bu yapı sayesinde aynı Java kodu farklı işletim sistemlerinde yeniden yazılmadan çalıştırılabilir. Java’nın “Write Once, Run Anywhere” yaklaşımı doğrudan JVM mantığına dayanır.
JDK vs JRE vs JVM Farkları
Bu üç yapı birbiriyle bağlantılıdır ancak aynı işi yapmaz. Aşağıdaki tablo farkları daha net gösterir.
| Bileşen | Ne İşe Yarar? | Kim Kullanır? |
|---|---|---|
| JDK | Java geliştirme araçlarını içerir | Yazılım geliştiriciler |
| JRE | Java uygulamalarını çalıştırır | Uygulama kullanıcıları / runtime ihtiyacı olan sistemler |
| JVM | Bytecode çalıştırır | Java çalışma altyapısı |
Java Sürümleri Karşılaştırması
Java tarafında sürümler geliştikçe araçlar, dağıtım biçimleri ve runtime yapıları daha modern hale gelmiştir. Bu yüzden JDK, JRE ve JVM kavramlarını sadece teorik olarak değil, sürüm bağlamında da anlamak gerekir.
| Java Sürümü | Kullanım Durumu | Kısa Not |
|---|---|---|
| Java 8 | Hâlâ yaygın | Legacy projelerde sık görülür |
| Java 11 | Kurumsal kullanımda güçlü | Uzun süre tercih edilen sürümlerden biridir |
| Java 17 | Modern projelerde yaygın | Güncel Java geliştirme için güçlü tercihlerden biridir |
| Java 21 | Yeni nesil projelerde popüler | Performans ve modern özellikler açısından dikkat çeker |
Modern Java dağıtımlarında ayrı JRE paketi her zaman bağımsız şekilde sunulmayabilir. Bu nedenle güncel Java kurulumlarında JDK ve runtime ilişkisini doğru anlamak önemlidir.
Gerçek Hayatta Hangisi Gerekli?
En çok sorulan sorulardan biri şudur: “Ben hangisini kurmalıyım?” Bunun cevabı kullanım amacınıza göre değişir.
- Java geliştiriyorsanız: JDK kurmanız gerekir.
- Sadece Java uygulaması çalıştıracaksanız: runtime tarafı yeterlidir.
- Java programı çalışıyorsa: arka planda JVM mantığı mutlaka vardır.
Sık Sorulan Sorular
JDK içinde JRE var mı?
Evet. Genel mantık olarak JDK, Java geliştirme araçlarını ve çalışma için gerekli bileşenleri kapsar.
JVM olmadan Java çalışır mı?
Hayır. Java bytecode’unun çalıştırılması için JVM mantığına ihtiyaç vardır.
JRE ile JDK arasındaki en temel fark nedir?
JDK geliştirme araçlarını içerir, JRE ise uygulamayı çalıştırma tarafına odaklanır.
Java öğrenirken JDK, JRE ve JVM farkını bilmek gerekir mi?
Evet. Özellikle Java’nın nasıl derlendiğini ve nasıl çalıştırıldığını anlamak için bu farkı bilmek çok önemlidir.
Sonuç
JDK, JRE ve JVM kavramlarını net anlamak, Java ekosistemini doğru öğrenmenin temel adımlarından biridir. JDK geliştirme için kullanılır, JRE çalıştırma ortamını sağlar, JVM ise Java’nın farklı sistemlerde çalışmasını mümkün kılan çekirdek yapıdır.
Eğer Java öğreniyor, Spring Boot geliştiriyor ya da backend tarafında ilerliyorsanız bu üç kavramı karıştırmamak size ciddi hız kazandırır.